package org.example.mybatis.session;

import java.util.List;

/**
 * SqlSession接口，定义基本的数据库操作
 */
public interface SqlSession extends AutoCloseable {
    /**
     * 查询单条记录
     */
    <T> T selectOne(String statement, Object parameter);

    /**
     * 查询多条记录
     */
    <E> List<E> selectList(String statement, Object parameter);

    /**
     * 插入记录
     */
    int insert(String statement, Object parameter);

    /**
     * 更新记录
     */
    int update(String statement, Object parameter);

    /**
     * 删除记录
     */
    int delete(String statement, Object parameter);

    /**
     * 获取Mapper接口的代理实现
     */
    <T> T getMapper(Class<T> type);

    /**
     * 关闭会话
     */
    void close();
}